Providing contextually sensitive tools and help content in computer-generated documents

ABSTRACT

A method and system are provided for creation, implementation, and use of computer-generated “smart” documents to which functionality is attached for providing contextually sensitive tools, controls and help content to users of those documents. Portions of documents are annotated with Extensible Markup Language (XML) tags and structure so that when a user enters those portions, such as by placing a computer cursor in those portions, the user is provided contextually sensitive tools, controls and/or help content. A document tools pane may open on the user&#39;s computer screen adjacent to the document being edited for providing the document tools, controls or help content related to the context of the text or data in which the cursor is located. If the user moves the cursor to another portion of the document, the user may obtain information associated with the context of the new portion of the document in which the cursor is located.

TECHNICAL FIELD

[0001] This invention relates to the provision of contextually sensitivetools and help content in computer-generated documents.

BACKGROUND OF THE INVENTION

[0002] Computer software applications allow users to create a variety ofdocuments to assist them in work, education, and leisure. For example,popular word processing applications allow users to create letters,articles, books, memoranda, and the like. Spreadsheet programs allowusers to store, manipulate, print, and display a variety ofalpha-numeric data. Such applications have a number of well-knownstrengths, including rich editing, formatting and calculation.

[0003] However, documents created by such software applications do notprovide users with contextually sensitive tools, help content, orsupport. That is, as the user is entering text or data into suchsoftware applications, these applications do not provide the user withhelpful tools or assistance based on the context of the text or databeing entered by the user. Internet web-based applications attempt tosolve some business problems through the creation and deployment ofweb-based templates with which users may enter information that may betransmitted to a back-end web server for the purpose of registering theuser for some type of service. Such web-based applications often mayinclude links with which the user may navigate to a separate web sitefor helpful information or assistance with the current web-basedapplication or document in use by the user. However, such web-basedapplications suffer compared to the aforementioned software applicationdocuments in that modem web-based applications seldom offer richediting, formatting, printing, and calculation.

[0004] By way of example, in a typical setting, a user may decide toprepare a resumé using a word processing application loaded on her homecomputer. As the user prepares the resumé, she likely will fill in suchsections such as “personal information,” “education,” “experience,” and“extra-curricular activities.” As the user is completing each of thosesections, she may require assistance, including information on thepreferred ordering of the sections, information on the preferred numberof past jobs to place in the “experience” section, and the like. Inorder to receive such assistance, the user likely must read a book onresumés, or go online to an internet-based resumé help site for theinformation.

[0005] In contrast, the user may enter an internet-based resumé site tocomplete a resumé using a web-based resumé template. The user may beallowed to enter specific information in given data fields, and the usermay be provided with internet web site links for navigating to siteswhere she may obtain assistance with various sections of the document.When the user has completed preparation of the web-based resumé, theuser may be allowed to submit the resumé to some web-based job service,or the user may be able to print the template. However, thefunctionality of the user's word processing application, such as richediting and formatting of the resumé, is likely not available to theuser given the limitations of the web-based application in contrast tothe user's computer-based word processor.

[0006] It is with respect to these and other considerations that thepresent invention has been made.

SUMMARY OF THE INVENTION

[0007] The present invention provides a method and system for creating,implementing and using computer-generated documents that providecontextually sensitive tools, controls and help content to the user(s)of those documents. Generally described, a schema is attached to adocument defining permissible data content, data type and data structurefor the document. The document is structured to associate the documentwith the schema, and a solution is associated with the documentstructure. A plurality of software components is assembled for providingthe solution to the document, and the document is enabled to call theplurality of software components for providing the solution to thedocument based on an editing position in the document.

[0008] After the document is created, a software application for openingthe document may be booted to initiate opening the document. Adetermination is made as to whether the document refers to the solution.A determination is made as to whether the plurality of softwarecomponents for providing the solution is present in a library ofsoftware components. If so, the plurality of software components iscalled for providing the solution to the document.

[0009] Once the document is opened for use, focusing document editing ina particular portion of the document, such as by placing the cursor in aparticular portion of the document, causes the generation of a list ofExtensible Markup Language (XML) elements enclosing a position of theediting focus. A determination is made as to whether any availablesolutions are associated with the list of XML elements. If any availablesolutions are associated with the list of XML elements, each associatedsolution is called and is obtained for use by the document. Preferably,the solutions comprise help content and document tools associated withthe context of the editing position in the document. A graphical userinterface is launched for displaying each solution obtained for use bythe document.

[0010] These and other features, advantages, and aspects of the presentinvention may be more clearly understood and appreciated from a reviewof the following detailed description of the disclosed embodiments andby references to the appended drawings and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011]FIG. 1 is a computer screen display of a software applicationgraphical user interface through which is displayed a document andassociated contextually sensitive tools and help content according to anembodiment of the present invention.

[0012]FIG. 2 is a block diagram illustrating client-side softwarearchitecture for use in conjunction with an embodiment of the presentinvention.

[0013]FIG. 3 is a block diagram of a computer and associated peripheraland networked devices that provide an exemplary operating environmentfor the present invention.

[0014]FIG. 4 is a flow chart illustrating a method for creating adocument that provides contextually sensitive tools and help contentaccording to an embodiment of the present invention.

[0015]FIG. 5 is a flow chart illustrating a method for opening adocument created in accordance with an embodiment of the presentinvention.

[0016]FIG. 6 illustrates a computer-generated dialog box for offeringmultiple document solutions to a user.

[0017]FIG. 7 illustrates a computer-generated dialog box for assisting auser with downloading components to an application created in accordancewith the present invention.

[0018]FIG. 8 is a flow chart illustrating a method of determining whatcontent to display in a document tools pane according to an embodimentof the present invention.

DETAILED DESCRIPTION

[0019] The present invention is directed toward creation, implementationand use of computer-generated “smart” documents to which functionalityis attached for providing contextually sensitive tools, help content andcontrols to users of those documents. According to an embodiment of theinvention, portions of documents are structured so that when a userenters those portions, such as by placing a computer cursor in thoseportions, the document points to a solution that may provide the usercontextually sensitive tools and/or help content. For example, if a useris preparing a resumé to assist her in obtaining a job, the user mayplace her computer cursor in the “education” section the resumé.According to the present invention, the placement of computer cursor inthe “education” section may provide the user with contextually sensitiveinformation. The document may point to an overall solution, e.g., aresumé document solution, or individual portions of the document maypoint to contextual subsets of the solution, e.g., and “experience”section solution of a resume document solution. A document tools panemay open on the user's computer screen adjacent to the document beingedited and may provide a narrative on suggested approaches for thecompletion of the “education” section. If the user moves the cursor toanother portion of the document, for example to the “objectives” sectionof the resumé, the user may obtain information associated with thatcontext, such as examples of proper employment objectives statements.

[0020] It should be understood that the contextually sensitive tools andhelp content provided to a user in accordance with an embodiment of thepresent invention may be provided for a variety of software applicationprograms, including word processors, spreadsheets, web browsers, texteditors, and the like. Moreover, the types and content of helpfulinformation and tools provided to a user according to an embodiment ofthe present invention may include a variety of tools and actions andhelp information as desired by the creator of the software applicationsin use by the user.

[0021] Referring to FIG. 1, a computer screen display is illustratedshowing an exemplary software application 100 with which a document andassociated document tools pane providing document tools and help contentis illustrated. The document 110 depicted in FIG. 1 shows an employeeannual performance review template with which an employ may complete herannual performance review or with which she may complete a performancereview of one of her employees. The application 100 depicted in FIG. 1is a word processing application used for displaying and editing thedocument 110, but as should be understood by those skilled in the art,the application 100 could include other software applications, includingspreadsheet applications, text editing applications, and the like.Moreover, the document 110 illustrated in FIG. 1 depicts an annualperformance review document, but the document 110 could include avariety of other documents and templates edited by the user, includingresumé templates, will templates, desktop publishing documents, letters,financial spreadsheets, and the like.

[0022] Referring to the exemplary document shown in FIG. 1, the wordprocessing application 100 provides typical functionality associatedwith a word processor, accessible via drop down menus such as, File,Edit, View, Insert, Format, etc. The document 110 is displayed in thework area of the application 100, and a document tools pane 135 isillustrated to the right of the document 110. As should be understood,the display illustrated in FIG. 1 is by way of example only, and thecomponents illustrated in FIG. 1 may be organized in a variety ofdifferent ways pleasing to the user. That is, the document tools panemay be located on the bottom of the screen display, to the left of thedocument 110, or according to other orientations allowed by theapplication 100.

[0023] A detailed discussion of the creation and implementation of the“smart” document 110 illustrated in FIG. 1 follows below, but generallydescribed according to an embodiment of the present invention, once theuser places her computer cursor within a particular section of thedocument 110, for example the “objectives” section 125 illustrated inFIG. 1, the user is provided with tools and help content in the documenttools pane 135. For example, if the user places her computer cursor inthe “objectives” section 125, the user may be provided with “ObjectiveWriting Tips” 155 shown in the document tools pane 135. Selection of the“Objective Writing Tips” 155, as illustrated in FIG. 1, causes a displayof “Objective Writing Tips” text 160 that provide the user with helpfulinformation as to how to complete the “objectives” section theperformance review document 110, illustrated in FIG. 1. If the usermoves the cursor to a different section of the document, for example thepersonal information section 120, information provided in the documenttools pane 135 will be provided to give the user assistance with thecompletion of the personal information section 120.

[0024] In addition to helpful information to assist the user, a varietyof document tools and actions 145 are provided. For example, the “SubmitReview” action may allow the user to submit the completed document 110to her supervisor or to her employee after completion of the document.The “Open Last Review” action may allow the user to open the lastperformance review so that she may determine whether she completed herobjectives as set forth in the last review. If the document in use bythe user is some other type of document, for example a resumé document,helpful information in the document tools pane might include informationon preparing the “education” section, the “experience” section, and/orthe “personal information” section. A will document 110 might beassociated with helpful information regarding legal rules forpreparation of wills, rules regarding estate beneficiaries, and thelike.

[0025] In addition to the document actions and help content illustratedin the pane 135, a variety of document controls may be provided,including radio buttons, text boxes, check boxes, ActiveX controls, XMLtree controls, and the like. For example, a text box may be provided toallow a user to select from a list of pre-written text items. Or, theuser may be allowed to enter text in a list box provided in the pane 135that will then be inserted into the document or used by the applicationwith respect to some other functionality of the application. A radiobutton or check box may be provided to allow the user to select fromdifferent choices of document actions or help content. For example, ifthe document is a will, check boxes may be provided with which the usermay select “married,” “single,” etc., to obtain help information basedon the user's personal will and estate profile.

[0026] Referring to FIG. 2, a general system architecture for creatingand utilizing a “smart” document 110 in accordance with the presentinvention is illustrated. A software application 100, as describedabove, is opened on the user's computer 20 to create or edit a document110 according to the present invention. A schema library 105 is providedfor containing all of the executable files required for providing thecontextually sensitive functionality to the document 110. For example,the schema library may include a variety of components, includingindividual modular software routines that have been compiled anddynamically linked and that are ready to use by the application 100 forproviding contextually sensitive functionality to the document 110.

[0027] Such components may include a number of dynamically-linkedlibraries (dll), which include executable files or routines storedseparately from the software application 110. The dlls are loaded by thesoftware application 100 only when they are needed to providefunctionality to the document 110. Additionally, as described in detailbelow, the schema library 105 may include a number of Extensible MarkupLanguage (XML) files for providing contextually sensitive functionalityin association with XML structure that has been applied to the document110.

[0028] A solution property 115 is included in the document 110 forpointing the document to a particular solution contained in the schemalibrary 105. The solution location property 118 provides the document110 and the application 100 with information as to the location of thesolution property in the schema library or to a remote location providedvia a distributed computing environment, such as is provided from aweb-based server via the Internet.

[0029] According to the present invention, and as described in detailbelow, when a user focuses on a particular portion of the document 110,such as the “objectives” section of the performance review 110illustrated in FIG. 1, a solution property 115 points the document tothe “objectives” section help solution illustrated in the document toolspane 135. The solution location 118 provides the document 110 and theapplication 100 with the location of the components, dlls, or XML filesnecessary for implementing that solution. As should be understood,exemplary components may include components for drawing the documenttools pane 135, components for displaying the information associatedwith the particular context, in this case the “objectives” section, andcomponents for executing document actions such as “Submit Review” action145.

[0030]FIG. 3 and the following discussion are intended to provide abrief, general description of a suitable computing environment in whichthe invention may be implemented. While the invention will be describedin the general context of an application program that runs on anoperating system in conjunction with a personal computer, those skilledin the art will recognize that the invention also may be implemented incombination with other program modules. Generally, program modulesinclude routines, programs, components, data structures, etc. thatperform particular tasks or implement particular abstract data types.Moreover, those skilled in the art will appreciate that the inventionmay be practiced with other computer system configurations, includinghand-held devices, multiprocessor systems, microprocessor-based orprogrammable consumer electronics, cell phones, minicomputers, mainframecomputers, and the like. The invention may also be practiced indistributed computing environments where tasks are performed by remoteprocessing devices that are linked through a communications network. Ina distributed computing environment, program modules may be located inboth local and remote memory storage devices.

[0031] With reference to FIG. 3, an exemplary system for implementingthe invention includes a conventional personal computer 20, including aprocessing unit 21, a system memory 22, and a system bus 23 that couplesthe system memory to the processing unit 21. The system memory 22includes read-only memory (ROM) 24 and random access memory (RAM) 25. Abasic input/output system 26 (BIOS), containing the basic routines thathelp to transfer information between elements within the personalcomputer 20, such as during start-up, is stored in ROM 24. The personalcomputer 20 further includes a hard disk drive 27, a magnetic disk drive28, e.g., to read from or write to a removable disk 29, and an opticaldisk drive 30, e.g., for reading a CD-ROM disk 31 or to read from orwrite to other optical media. The hard disk drive 27, magnetic diskdrive 28, and optical disk drive 30 are connected to the system bus 23by a hard disk drive interface 32, a magnetic disk drive interface 33,and an optical drive interface 34, respectively. The drives and theirassociated computer-readable media provide non-volatile storage for thepersonal computer 20. Although the description of computer-readablemedia above refers to a hard disk, a removable magnetic disk and aCD-ROM disk, it should be appreciated by those skilled in the art thatother types of media which are readable by a computer, such as magneticcassettes, flash memory cards, digital video disks, Bernoullicartridges, and the like, may also be used in the exemplary operatingenvironment.

[0032] A number of program modules may be stored in the drives and RAM25, including an operating system 35, one or more application programs100, a word processor program module 37 (or other type of programmodule), program data, such as the manifest 38, and other programmodules (not shown).

[0033] A user may enter commands and information into the personalcomputer 20 through a keyboard 40 and pointing device, such as a mouse42. Other input devices (not shown) may include a microphone, joystick,game pad, satellite dish, scanner, or the like. These and other inputdevices are often connected to the processing unit 21 through a serialport interface 46 that is coupled to the system bus, but may beconnected by other interfaces, such as a game port or a universal serialbus (JSB). A monitor 47 or other type of display device is alsoconnected to the system bus 23 via an interface, such as a video adapter48. In addition to the monitor, personal computers typically includeother peripheral output devices (not shown), such as speakers orprinters.

[0034] The personal computer 20 may operate in a networked environmentusing logical connections to one or more remote computers, such as aremote computer 49. The remote computer 49 may be a server, a router, apeer device or other common network node, and typically includes many orall of the elements described relative to the personal computer 20,although only a memory storage device 50 has been illustrated in FIG. 3.The logical connections depicted in FIG. 3 include a local area network(LAN) 51 and a wide area network (WAN) 52. Such networking environmentsare commonplace in offices, enterprise-wide computer networks, intranetsand the Internet.

[0035] When used in a LAN networking environment, the personal computer20 is connected to the LAN 51 through a network interface 53. When usedin a WAN networking environment, the personal computer 20 typicallyincludes a modem 54 or other means for establishing communications overthe WAN 52, such as the Internet. The modem 54, which may be internal orexternal, is connected to the system bus 23 via the serial portinterface 46. In a networked environment, program modules depictedrelative to the personal computer 20, or portions thereof, may be storedin the remote memory storage device. It will be appreciated that thenetwork connections shown are exemplary and other means of establishinga communications link between the computers may be used.

[0036]FIG. 4 is a flow chart illustrating a method of creating a “smart”document 110 according to an embodiment of the present invention. Themethod 300 begins at start step 305 and proceeds to step 310 where anXML schema is attached to the document. As is understood by thoseskilled in the art, a schema sets up the grammar and rules associatedwith Extensible Markup Language (XML) tags applied to the document 110to provide XML structure to the document 110. The schema attached to thedocument 110 illustrated in FIG. 1 may set out all of the grammatical,data type and data content rules allowed for tags associated with thedocument 110. For example, the “personal information” section 120, whichincludes the name, e-mail name, title, and employee identification forthe employee, may have schema that requires that data entered into the“name” block must be in the form of “first name,” followed by “middlename,” followed by “last name.”

[0037] As understood by those skilled in the art of Extensible MarkupLanguage usage, once that portion of the document 110 is annotated withXML structure corresponding to the “name” element, for example,manipulation of data entered into that section of the document may beperformed by software components without regard to the actual content ofthe data so long as the content was entered according to the schemaprescribed for that portion of the document.

[0038] At step 315, the document 110 is annotated with XML structurethat will be associated with tools and help functionality for providingcontextually sensitive functionality to the document as described above.A simplified XML structure annotation for the employee review document110 illustrated in FIG. 1 is as follows. Sample XML Structure <EmployeeReview> <Personal Information> <Name> <first_name>Joe</first_name><last_name>Smith</last_name> </Name> <email Name><email>Joe@Address.com</email> </email Name> * * * </Employee Review>

[0039] The schema attached to the document 110 prescribes the data typeand data structure rules entered within the XML document structure. Asshould be understood, the XML structure illustrated above is simplifiedin nature, and is provided for purposes of illustration only. A sampleXML schema associated with the example XML structure above is asfollows. Sample Schema<xsd:schema   xmlns:xsd=“http://www.w3.org/2001/XMLSchema”xmlns=“urn:reviewForm” targetNamespace=“urn:reviewForm”elementFormDefault=“qualified”> <xsd:annotation> <xsd:documentationxml:lang=“en”> The schema for the August 2001 Microsoft employee reviewform. </xsd:documentation> </xsd:annotation> <xsd:element name=“Review”type=“ReviewType” /> <xsd:complexTypename=“EmployeeManagerResponsesType”> <xsd:all> <xsd:elementname=“EmployeeResponse” type=“xsd:string” /> <xsd:elementname=“ManagerResponse” type=“xsd:string” /> </xsd:all></xsd:complexType> <xsd:simpleType name=“RatingScore”> <xsd:restrictionbase=“xsd:decimal”> <xsd:enumeration value=“2.5” /> <xsd:enumerationvalue=“3.0” /> <xsd:enumeration value=“3.5” /> <xsd:enumerationvalue=“4.0” /> <xsd:enumeration value=“4.5” /> <xsd:enumerationvalue=“5.0” /> </xsd:restriction> </xsd:simpleType> <xsd:complexTypename=“RatingType”> <xsd:all> <xsd:element name=“EmployeeRating”type=“RatingScore” /> <xsd:element name=“EmployeeComments”type=“xsd:string” /> <xsd:element name=“ManagerRating”type=“RatingScore” /> <xsd:element name=“ManagerComments”type=“xsd:string” /> </xsd:all> </xsd:complexType> <xsd:complexTypename=“IdentityType”> <xsd:all> <xsd:element name=“Name”type=“xsd:string” /> <xsd:element name=“Alias” type=“xsd:string” /><xsd:element name=“Title” type=“xsd:string” /> <xsd:elementname=“EmployeeID” type=“xsd:positiveInteger” /> <xsd:elementname=“Reviewer” type=“xsd:string” /> <xsd:element name=“Department”type=“xsd:string” /> <xsd:element name=“Date” type=“xsd:date” /></xsd:all> </xsd:complexType> <xsd:complexType name=“ReviewType”mixed=“true”> <xsd:all> <xsd:element name=“ReviewPeriod”type=“xsd:string” /> <xsd:element name=“Identity” type=“IdentityType” /><xsd:element name=“CurrentObjectives”type=“EmployeeManagerResponsesType” /> <xsd:element name=“FutureObjectives” type=“EmployeeManagerResponsesType” /><xsd:element name=“StrengthsAndWeaknesses”type=“EmployeeManagerResponsesType” /> <xsd:element name=“Ratings”type=“RatingType” /> </xsd:all> </xsd:complexType> </xsd:schema>

[0040] At step 320, the document 110 is saved along with the associateddocument schema and XML structure.

[0041] At step 325, software programming code is written that isnecessary to display and handle tools, controls and actions in thedocument tools pane 135 according to the position of the user's cursorwithin the document 110. The code written at step 325 includes allrequired XML files, including Extensible Style Sheet Language (XSL)files, including XSL transformations and XSL formatting objects. Asunderstood by those skilled in the art, XSL transformations includefiles containing specific rules by which one XML document is transformedinto another XML document. As should be understood by those skilled inthe art, all XML files, including XML documents and XML transformationdocuments, are written for processing the document 110 as anXML-structured document.

[0042] According to one embodiment, an XML schema may be written todefine a list of document actions, controls and help content that areassociated with a solution or contextual subset of a solution that arecorrespondingly associated with XML structure (elements) in thedocument. The XML schema may be written using any editing tool or XMLschema editing tool to create an instance of the schema. The XML schemamay be written to include directly in the XML schema all of theproperties of the schema and a list of the document actions, controlsand help content to be displayed. An exemplary XML schema is set outabove.

[0043] Other code written for the document 110 at step 325 includes allof the components, such as dynamic-link libraries (dll), needed by theapplication 100 and the document 110 for providing the contextuallysensitive functionality to the document 110, as described with referenceto FIG. 1. For example, a dll in the form of an application programminginterface (API) may be written to call on a particular solutioncontained in the schema library 105 when the computer cursor is locatedby the user within a particular context of the document 110. That is,when the computer cursor is placed within a particular section orportion of the document 110, such as the “name” portion, an applicationprogram interface is included for finding the solution property 115associated with the “name” portion of the document 110 and for callingthat solution to provide document tools, actions and help contentassociated with the “name” portion of the document.

[0044] Other exemplary components that are written at step 325 includecomponents for drawing the document tools pane 135 and for displayingtextual information associated with the XML elements in the document 110within which the computer cursor is presently located. Other componentsmay include modular software routines for displaying an action, such asa “submit review” button, for allowing the user to submit the review toa third party, such as the user's employee or the user's supervisor.Still other components may be included for drawing and for providingfunctionality to controls, such as radio buttons, text boxes and checkboxes, as described above with reference to FIG. 1. Any component objectmodel add-ins that may be needed to provide functionality according tothe present invention are also written at step 325. In addition tosoftware components necessary providing the document tools and helpfunctionality described herein, the actual text of help content that isdrawn into the pane 135 is assembled for deployment when a correspondinghelp topic is called.

[0045] Controls, such as radio buttons, text boxes and check boxes, maybe provided in the pane 135 without an associated schema being attachedto the document. By declaring that a control is associated with aparticular XML element, that control may be provided at the top of thepane 135 above other actions, controls and help topics prescribed by theschema. Similarly, a control may be provided immediately above all otheritems, including those described above, in the pane 135 by declaringthat the control is associated with the entire schema for the documentrather than to individual XML elements prescribed by the schema.

[0046] All of the aforementioned files, components, component add-ins,dlls, schema files, and XML files are assembled and stored for use bythe application 100 in providing the contextually sensitivefunctionality of the document 110. The schema library 105 may be in theform of a database containing pointers to the aforementioned storedcomponents that may be stored in the memory of the computer 20 invarious locations, including the computer's registry.

[0047] According to embodiment of the present invention, an applicationprogramming interface (API) is provided for implementing thefunctionality of the present invention to provide a “smart” documentsolution to the document 110. The API includes properties and methods orinstructions that are called upon when a particular action is initiated,for example, opening the document 110 that in turn points to a solution,as described above. Listed below is sample computer programming code forimplementing the “smart” document API. The sample code listed below isnot limiting of variations that may be made in computer programming codethat may be written for implementing the API according to the presentinvention.

[0048] Sample Smart Document API

[0049] Implements ISmartDocument

[0050] Private Sub ISmartDocument_SmartDocInitialize(ByVal document AsObject, ByVal bstrSolutionPath As String)

[0051] Private Property Get ISmartDocument_SmartDocXMLTypeCount( ) AsLong

[0052] Private Property Get ISmartDocument_SmartDocXMLTypeName(ByValsmartDocID As Long) As String

[0053] Private Property Get ISmartDocument_SmartDocXMLTypeCaption(ByValsmartDocID As Long, ByVal LocaleID As Long) As String

[0054] Private Property Get ISmartDocument_ControlCount(ByValSmartDocXMLTypeName As String) As Long

[0055] Private Property Get ISmartDocument_ControlID(ByValSmartDocXMLTypeName As String, ByVal ControlIndex As Long) As Long

[0056] Private Property Get ISmartDocument_ControlTypeFromID(ByValControlID As Long, ByVal ApplicationName As String, ByVal LocaleID AsLong) As C_TYPE

[0057] Private Property Get ISmartDocument_ControlNameFromID(ByValControlID As Long) As String

[0058] Private Property Get ISmartDocument_IsControlDynamic(ByValControlID As Long, ByVal ApplicationName As String, ByVal LocaleID AsLong) As Boolean

[0059] Private Property Get ISmartDocument_ControlCaptionFromID(ByValControlIDAs Long, ByVal ApplicationName As String, ByVal LocaleID AsLong, ByVal bstrText As String, ByVal bstrXML As String, ByVal Target AsObject) As String

[0060] Private Sub ISmartDocument_PopulateRadioGroup(ByVal ControlID AsLong, ByVal ApplicationName As String, ByVal LocaleID As Long, ByValbstrText As String, ByVal bstrXML As String, ByVal Target As Object,List( ) As String, count As Long, InitialSelected As Long) Private SubISmartDocument_OnRadioGroupSelectChange(ByVal ControlID As Long, ByValTarget As Object, ByVal Selected As Long, ByVal Value As String)

[0061] Private Sub ISmartDocument_PopulateImage(ByVal ControlID As Long,ByVal ApplicationName As String, ByVal LocaleID As Long, ByVal bstrTextAs String, ByVal bstrXML As String, ByVal Target As Object, ImageSrc AsString)

[0062] Private Sub ISmartDocument_ImageClick(ByVal ControlID As Long,ByVal ApplicationName As String, ByVal Target As Object, ByVal Text AsString, ByVal Xml As String, ByVal LocaleID As Long, ByVal XCoordinateAs Long, ByVal YCoordinate As Long)

[0063] Private Sub ISmartDocument_PopulateDocumentFragment(ByValControlID As Long, ByVal ApplicationName As String, ByVal LocaleID AsLong, ByVal bstrText As String, ByVal bstrXML As String, ByVal Target AsObject, DocumentFragment As String)

[0064] Private Sub ISmartDocument_PopulateActiveXProps(ByVal ControlIDAs Long, ByVal ApplicationName As String, ByVal LocaleID As Long, ByValbstrText As String, ByVal bstrXML As String, ByVal Target As Object,PropBag As SmartTagLib.IActiveXProperties)

[0065] Private Sub ISmartDocument_PopulateCheckbox(ByVal ControlID AsLong, ByVal ApplicationName As String, ByVal LocaleID As Long, ByValbstrText As String, ByVal bstrXML As String, ByVal Target As Object,Checked As Boolean)

[0066] Private Sub ISmartDocument_OnCheckboxChange(ByVal ControlID AsLong, ByVal Target As Object, ByVal Checked As Boolean)

[0067] Private Sub ISmartDocument_PopulateListOrComboContent(ByValControlID As Long, ByVal ApplicationName As String, ByVal LocaleID AsLong, ByVal bstrText As String, ByVal bstrXML As String, ByVal Target AsObject, List( ) As String, count As Long, InitialSelected As Long,IsEditable As Boolean, ControlOnSameLine As Boolean)

[0068] Private Sub ISmartDocument_OnListOrComboSelectChange(ByValControlID As Long, ByVal Target As Object, ByVal Selected As Long, ByValValue As String)

[0069] Private Sub ISmartDocument_PopulateTextboxContent(ByVal ControlIDAs Long, ByVal ApplicationName As String, ByVal LocaleID As Long, ByValbstrText As String, ByVal bstrXML As String, ByVal Target As Object,Value As String, ControlOnSameLine As Boolean)

[0070] Private Sub ISmartDocument_OnTextboxContentChange(ByVal ControlIDAs Long, ByVal Target As Object, ByVal Value As String)

[0071] Private Sub ISmartDocument_PopulateHelpContent(ByVal ControlID AsLong, ByVal ApplicationName As String, ByVal LocaleID As Long, ByValbstrText As String, ByVal bstrXML As String, ByVal Target As Object,Content As String)

[0072] Private Sub ISmartDocument_InvokeControl(ByVal ControlID As Long,ByVal ApplicationName As String, ByVal Target As Object, ByVal Text AsString, ByVal Xml As String, ByVal LocaleID As Long)

[0073] A number of properties and methods are included in the API listedabove. The SmartDocInitialize method includes routines and instructionsexecuted when the API is called upon to provide “smart” documentfunctionality to the docket 110. The SmartDocXMLTypeCount propertyincludes the number of XML element types associated with the solution.The SmartDocXMLTypeName property includes unique identifiers for the XMLelement types associated with the “smart” document solution. TheSmartDocXMLTypeCaption property includes captions associated with XMLelements that may be included in a menu or pane such as the help pane135.

[0074] The ControlCount property includes the number of controlsassociated with the “smart” document solution for a particular XMLelement type. The ControlID property includes unique identifiers for thecontrols. The ControlTypeFromID property includes the types of controlsavailable for use with an associated solution, for example, radiobuttons, textboxes, and check boxes. The ControlNameFromID propertyreturns a name associated with each control for use internally by agiven application program 100.

[0075] The PopulateRadioGroup method includes routines and instructionsthat are executed for populating radio control buttons within a menu orpane such as the help pane 135. The OnRadioGroupSelectChange methodincludes routines and instructions that are executed when a radio group(radio button) is selected or deselected.

[0076] The PopulateImage method includes routines and instructions thatare executed for populating an image associated with a solution, such asan image populated within the help pane 135. The ImageClick methodincludes routines and instructions that are executed when an image isselected by a user.

[0077] The PopulateDocumentFragment method includes routines andinstructions that are executed for populating the user interface withtext or data. The PopulateActiveXProps method includes routines andinstructions that are executed for obtaining ActiveX functionalityassociated with a document solution.

[0078] The PopulateCheckbox method includes routines and instructionsfor providing a checkbox control in a user interface such as the helppane 135. The OnCheckboxChange method includes routines and instructionsthat are executed when a checkbox control is selected or deselected by auser.

[0079] The PopulateListOrComboContent method includes routines andinstructions that are executed to populate a list box control in a userinterface such as the pane 135. The OnListOrComboSelectChange methodincludes routines and instructions that are executed upon the selectionof an item in a list box control.

[0080] The PopulateTextboxContent method includes routines andinstructions for populating a textbox in a user interface such as thepane 135. The OnTextboxContentChange method includes routines andinstructions that are executed for handling an event associated with thechange of content in a textbox control within a user interface such asthe pane 135.

[0081] The PopulateHelpContent method includes routines and instructionsfor populating a help content field within the pane 135 with requiredtext or data. The InvokeControl method includes routines andinstructions that are executed when a control such as a radio button,textbox, or checkbox is selected or deselected.

[0082] Referring still to FIG. 4, at step 330, a determination is madeas to whether the document 110 may work in a client-server operation.That is, components providing contextually sensitive functionality tothe application 110, or updates or changes to those components, may bestored at a remote server location separate from the computer 20. If thedocument is to be enabled to obtain necessary components for operationof the application and document from a remote server location, themethod proceeds to step 335, and server code is written to a serverlocation for responding to client-side actions performed by the user atthe computer 20. That is, application programming interfaces forcorresponding between the computer 20 and a remote server 49 are writtenfor obtaining server-based data and application components necessary forproviding the contextually sensitive functionality of the presentinvention. If it is desired that the application point to a remoteserver for data and application components, a solution locationidentifier, such as a solution URL, is added to point the application toa location on the remote server to obtain the necessary data andapplication components.

[0083] At step 340, a manifest of all of the programming componentsdescribed above is created for identifying the list of components, dlls,schema files, and XML files that will be used to provide varioussolutions and functionality to the document 110. A pointer is added tothe document 110 for pointing the document to the manifest of componentsfor obtaining functionality provided by individual and variouscomponents. For a detailed description of the manifest, see U.S. patentapplication entitled “Mechanism for Downloading Software Components FromA Remote Source For Use By A Local Software Application,” Ser. No.______ filed ______, which is incorporated herein by this reference asif fully set out herein. At step 350, all files, code, and changes tothe document 110 are saved, and the document creation method ends atstep 390. Accordingly, the document 110 is now in a condition to beopened and utilized by a user.

[0084]FIG. 5 refers to the steps involved in opening and utilizing thedocument 110. For purposes of example only, the employee performancereview document 110 is described with reference to the steps involved inopening a “smart” document created and implemented in accordance with anembodiment of the present invention. The method 400 begins at start step405, and proceeds to step 410 where the application 100 is booted by theuser. As is understood by those skilled in the art, the application 100may be booted by selecting the application or by selecting a document110 created with the application 100.

[0085] At step 415, the user selects the document 110 for opening in amanner consistent with the application 100. At step 420, a determinationis made as to whether the document 110 refers to a solution. That is, atstep 420, a determination is made as to whether the document 110 isannotated with pointers to a solution or to multiple solutions forproviding contextually sensitive tools and help information to thedocument, as described above. As a part of the check to determinewhether the document 110 points to a solution or to multiple solutions,a determination is also made as to whether a schema has been attached tothe document as described above. If the document does refer to asolution, for example a solution for providing the user with assistancein preparation of the user's employee review document 110, the methodproceeds to step 425 and the application 100 calls the schema library105 to determine whether the solution referred to by the document 110 isstored in the schema library 105. At the schema library, thedetermination includes a determination as to what components in theschema library are necessary; that is, what components are associatedwith the solution I.D. For example, the document 110 may have a schemaattached to define the rules governing the XML structure of the document110, but that was created without reference to a particular solution.

[0086] At step 430, a determination is made as to whether the solutionis stored in the schema library. As should be understood, multiplesolutions may be attached to the document 110. For example, a firstsolution might include helpful information and actions to providecontextually sensitive information regarding completion of the document110 by a particular user. A second solution may be attached to thedocument 110 for providing information to a supervisor of the user sothat the contextually sensitive information provided to the supervisorwill give the supervisor information as to how to evaluate each sectionof the employee's review document.

[0087] If multiple solutions are referred to by the document 110, aprompt may be provided to the user, such as the dialog box 500,illustrated in FIG. 6, to notify the user that multiple solutions areavailable for this document. The user may then select one solution fromthe list of solutions for providing the desired functionality to theuser after the document opens.

[0088] At step 435, a determination is made as to whether the useractually wants the solution to be provided to the user after thedocument 110 is opened. As should be understood, a dialog box similar tothe dialog box 500 may be presented to the user to query the user as towhether she desires the help content and tools functionality. The usermay have completed the document 110 on numerous occasions and may notnow desire additional help functionality or action functionality. Ifdesired, the user may elect to always receive the solution upon openingthe document 110. Similarly, the user may elect to have the document 110via the application 100 check for updates to the solution each time thedocument 110 is opened.

[0089] If the user declines the solution, the method proceeds to step455, and the document is opened without “smart” document solutionsaccording to the normal procedures required and implemented by theapplication 100. If the user does desire the functionality of thesolution referred to by the document 110, the method proceeds to step440, and the solution is loaded for use by the application 100 anddocument 110. As should be understood by those skilled in the art,loading the solution includes calls from the document 110 via theapplication 100 to all necessary files, dlls, component add-ins, and XMLfiles associated with the solution and stored in the schema library 105.

[0090] Upon being called by the document 110, each called file isregistered with the application 100 via the computer's operating system,and a path is established between each called file and the application100 and document 110 for provision of the functionality associated witheach file. For example, if a particular dll that is used for drawing thedocument tools pane 135 must be assigned a registry key for propercommunication with the application 100 and document 110, thisregistration process is performed during the load solution step 440. Atstep 445, the “smart” document 110 is opened and is displayed on theuser's computer screen, as illustrated in FIG. 1.

[0091] Referring back to step 420, if the document does not refer to asolution, the method proceeds to step 450, and a determination is madeas to whether a schema has been attached to the document. If thedocument has an attached schema, but no reference to a particularsolution, the method proceeds to step 430 and a “check” is made of theschema library as to whether a solution does exist that may beassociated with the schema that is attached to the document 110. Thatis, even where no solution is referred to in the document 110, theschema library may have solutions that have been obtained by the user ofthe computer 20 subsequent to the creation of the document 110 that maybe utilized by the document 110 even though the document 110 was notoriginally created to refer to the solution.

[0092] If a solution does exist in the schema library for the document110, the method proceeds to step 435, and the steps thereafter, asdescribed above. If a schema is not attached to the document 110, themethod proceeds to step 455, and the document is opened without “smart”document solutions.

[0093] Referring back to step 430, if no solution(s) are found in theschema library associated with the solution referred to by the document110 or associated with the attached schema, the method proceeds to step460, and a determination is made as to whether the user would like todownload a solution. At step 460, the user may be “prompted” by theapplication 100 and informed that the document 110 will work moreefficiently, or will be more useful, if the user downloads certain helpand action functionality to the user's document 110. The user may beprovided with a “prompt” in the form of a dialog box, such as the dialogbox 600 illustrated in FIG. 7. A number of queries may be made to theuser to ask the user whether the user would like components comprisingthe desired solution to be downloaded according to a number of methods.If the user declines to download solution functionality and components,the method proceeds back to step 455, and the document is opened without“smart” document solutions as described above.

[0094] If the user desires to download the solution(s) offered to theuser, the method proceeds to step 465. At step 465, components necessaryfor providing the desired solution(s) to the document 110 are downloadedto the user's computer 20 from some remote source, such as a remoteweb-based server. In order to locate the remote source, the application100 uses the solution location pointer 118 from the document 110 tolocate and obtain the necessary solution components. For a detaileddescription of a mechanism for downloading data and applicationcomponents and other software modules from a remote location to theapplication 110, see U.S. patent application entitled “Mechanism forDownloading Software Components From A Remote Source For Use By A LocalSoftware Application, ”Ser. No. ______ filed ______, which isincorporated herein by this reference as if fully set out herein. Atstep 470, the downloaded solutions are loaded into the client-sideschema library 105, and the solution is loaded as described above sothat the document 110 will include the functionality of the solution.

[0095]FIG. 8 is a flow chart illustrating a method for determining whatto display in the document tools pane 135 after a document 110 is openedwith a “smart” document solution. For purposes of the description of thesteps illustrated with reference to FIG. 8, the document 110 has beenopened with a “smart” document solution which has been loaded and isrunning. By way of example, consider that the user has placed thecomputer cursor in a particular location with the document 110, such asthe “objectives” section 125.

[0096] The method 700 begins at start step 705, and proceeds to step710, where a list of XML elements that surround the cursor is generated.The position of the cursor within the XML hierarchy is located, and theX-path expression to get to the position where the cursor is located isdetermined. For example, referring to the simplified XML code set forthabove, the cursor may be located within the “e-mail” tag and inside thelarger XML tree within the “employee review” tag.

[0097] At step 715, a determination is made as to which tools and helpcontent should appear in the document tools pane 135. To make thisdetermination, the application 100 enters a look-up table stored on theclient computer 20 that contains information about which XML elementshave which particular tools, help content, controls, etc., associatedwith those XML elements. For example, if the cursor is located in the“e-mail name” element within the “personal information” section 120, theapplication 100 will enter the look-up table to determine whichparticular tools or help content are associated with the e-mail nameelement.

[0098] Each document action, help item, and control associated with eachelement is populated with a unique identification (ID) associated witheach XML element to which it is applied so that the application 100 mayreadily locate the actions, help items, or tools associated with the XMLelement. At step 720, a determination is made as to whether any of theactions, help items, or controls are dynamic. A control may appeardifferently based on the context or background information for thecontext. The “objectives” section of the review document 110 may beassociated with a “Submit Review” button when the section is completed.On the other hand, if the section is not completed, the “Submit Review”button may not appear in the pane 135 because the document should not besubmitted without the completed “objections” section. Accordingly, the“Submit Review” button in this case may be identified as dynamic at step720, and the method then proceeds to step 725. At step 725, the document110 via the application 100 calls the component representing the “SubmitReview” button and provides that component with the context of thecursor position, for example, whether the “objectives” element has beencompleted or not.

[0099] At step 730, after a determination has been made that theactions, help content, or controls are static or dynamic, the contentsof the document tools pane 135 are drawn on the user's computer screenadjacent to the document 110, as illustrated in FIG. 1. At step 735, adetermination is made as to whether the cursor is moved to a newcontext. For example, after the user completes an entry in the“objectives” section 125, the user may move the cursor to the “personalinformation” section 120 to complete that section. If the cursor doesnot move, the method proceeds to step 790 and ends. That is, as long asthe cursor stays in the current context, no additional changes are madeto the content of the document tools pane 135. If the cursor is moved toa new context within the document, the method proceeds back to step 710where a new list of XML elements containing the cursor is generated, andthe method proceeds on as described above to provide new content in thedocument tools pane 135 associated with the new position and context ofthe cursor.

[0100] Referring back to FIG. 1, the following is a description of thetools and help content drawn in the document tools pane 135. Theparticular text and controls illustrated in FIG. 1 are by way of exampleonly, and vary with the context of the cursor position as describedabove. The name 140 is a name for the document XML element associatedwith the actions and tools shown in the document tools pane 135. Thename may refer to the schema that is attached to the document, forexample, employee performance review form, or the name 140 may refer tothe XML element in which the cursor is currently located. For example,if the cursor is located in the “objectives” section, the name 140 maybe re-drawn as “objectives section.” The document actions 145 aredisplayed based on the cursor context and based on whether the actionsare static or dynamic. As set forth above, the “Submit Review” action,for example, may be a dynamic action that is not displayed in thedocument actions pane 135 if all required sections of the document 110have not been completed. The “Last Years Objectives” help topic 155 isshown in a collapsed display. Selecting the “+”expands the help topic todisplay additional sub-topics contained therein. The “Objective WritingTips” help topic is shown in an expanded view, showing the full content160 available under that help topic. If an XML element within thedocument 110 has no “smart” document actions or tools associated withit, that XML element is not shown or identified in the document toolspane 135.

[0101] Help topics and tools may be nested, meaning that sub-help topicsand sub-actions may be included in help topics and document tools. Ifthe cursor is in multiple elements because of nesting, then the numberof sections in the document tools pane 135 can be greater than two. Inthis case, the nested elements are shown in order of nesting where theoutermost element is at the top of the document tools pane 135 andinnermost element is at the bottom of the document tools pane 135. Ifthe elements, actions, tools, and help content do not fit on one page, ascroll bar may be provided, as illustrated in FIG. 1, that will extendover the entire document tools pane 135. Action and help content arelisted in the order in which the dlls, or components that provide themto the document 110 return their names in response to a call from theapplication 100. According to one embodiment, XML elements that are notassociated with actions, controls or help topics are not shown to theuser. If desired, however, all XML elements may be shown in the pane 135to make the user aware of the complete XML structure of the document110.

[0102] Accordingly, after the document 110 is opened, and the “smart”document solution is loaded and implemented as described above, the userof the document 110 may now enter the document and complete the documentwith the help of the “smart” document functionality provided in thedocument tools pane 135. As the user moves the computer cursor throughvarious sections of the document that are tagged with XML structure, theuser may be provided with helpful information and tools associated withthat portion of the document.

[0103] It will be apparent to those skilled in the art that variousmodifications or variations may be made in the present invention withoutdeparting from the scope or spirit of the invention. Other embodimentsof the invention will be apparent to those skilled in the art fromconsideration of the specification and practice of the inventiondisclosed herein.

We claim:
 1. A method of providing contextually sensitive functionalityto a computer-generated document, comprising the steps of: attaching aschema to the document defining permissible data content, data type anddata structure for the document; structuring the document to associatethe document with the schema; associating a solution with the documentstructure; assembling a plurality of software components for providingthe solution to the document; and enabling the document to call theplurality of software components for providing the solution to thedocument based on an editing position in the document.
 2. The method ofclaim 1, whereby the schema includes a definition of permissible datacontent, data type and data structure for the whole document.
 3. Themethod of claim 1, whereby the schema includes a definition ofpermissible data content, data type and data structure for particularportions of the document.
 4. The method of claim 1, whereby the step ofattaching a schema to the document, includes attaching an ExtensibleMarkup Language (XML) schema to the document.
 5. The method of claim 3whereby the step of structuring the document includes structuring theparticular portions of the document to associate the particular portionsof the document with permissible data content, permissible data type,and permissible data structure for the particular portions of thedocument as defined by the schema.
 6. The method of claim 5, whereby thestep of structuring the particular portions of the document includesannotating the particular portions of the document with XML structure.7. The method of claim 6, whereby the step of annotating the documentwith XML structure further comprises defining XML elements associatedwith the particular portions of the document.
 8. The method of claim 7,whereby the step of defining XML elements further comprises defining XMLelements associated with a plurality of text strings in the document. 9.The method of claim 7, whereby the step of defining XML elements furthercomprises defining XML elements associated with a plurality of dataelements within the document.
 10. The method of claim 6, whereby thestep of associating a solution with the document structure, furthercomprises associating help content and document tools with the XMLstructure.
 11. The method of claim 10, whereby the help content anddocument tools are associated with XML elements comprising the XMLstructure.
 12. The method of claim 6, whereby the step of associating asolution with the document structure, further comprises associatingcontrols with the XML structure.
 13. The method of claim 12, whereby thestep of associating controls with the XML structure includes associatingradio buttons, check boxes or text boxes with the XML structure.
 14. Themethod of claim 1, further comprising the steps of: listing theplurality of software components in a manifest of software components;and storing a pointer to the manifest in a library of softwarecomponents.
 15. The method of claim 14, whereby the library of softwarecomponents is a schema library.
 16. The method of claim 7, whereby thestep of enabling the document to call the plurality of softwarecomponents further comprises the step of attaching a solution propertyto the document to associate the plurality of software components forproviding the solution with the document.
 17. The method of claim 16,further comprising the step of associating the solution property withthe XML structure.
 18. The method of claim 17, whereby the step ofattaching a solution property to the document further comprisesattaching a plurality of solution properties to the document toassociate of plurality of contextual subsets of the solution with theparticular portions of the document.
 19. The method of claim 18, furthercomprising associating each of the plurality of contextual subsets ofthe solution with a plurality of corresponding XML elements.
 20. Themethod of claim 19, whereby each of the plurality of contextual subsetsof the solution include help content or document tools associated witheach of a plurality of XML elements.
 21. The method of claim 7, furthercomprising the step of enabling the document to receive the solution byreceiving a call to the solution from the document based on initiationof editing the document within an XML element associated with thesolution.
 22. The method of claim 1, further comprising the steps of:booting a software application for opening the document; initiatingopening the document; determining whether the document refers to thesolution; determining whether the plurality of software components forproviding the solution is present in a library of software components;and calling the plurality of software components for providing thesolution to the document.
 23. The method of claim 22, in response tocalling the plurality of software components, providing the solution tothe document.
 24. The method of claim 22, further comprising determiningwhether the document refers to more than one solution.
 25. The method ofclaim 22, further comprising determining whether the document contains asolution property pointing to the solution.
 26. The method of claim 25,further comprising determining whether the document contains a pointerto the solution.
 27. The method of claim 26, further comprisingdetermining whether the document contains a pointer to a contextualsubset of the solution.
 28. The method of claim 22, further comprisingthe step of completing opening the document with functionality providedby the plurality of software components available for use by thedocument.
 29. The method of claim 22, further comprising the steps of:focusing document editing in a particular portion of the document;generating a list of XML elements enclosing a position of the editingfocus; determining if any available solutions are associated with thelist of XML elements; and after determining if any available solutionsare associated with the list of XML elements, calling each associatedsolution and obtaining each associated solution for use by the document.30. The method of claim 29, whereby the step of focusing documentediting in a particular portion of the document includes placing acomputer cursor within the particular portion of the document.
 31. Themethod of claim 25, whereby the step of determining if any availablesolutions are associated with the list of XML elements, furthercomprises the step of parsing a look-up table of solutions to determineif any available solutions are associated with any XML element in thelist of XML elements.
 32. The method of claim 31, further comprising thestep of determining whether any of the available solutions are dynamicby calling on each of a plurality of software components comprising theany available solutions.
 33. The method of claim 31, further comprisingthe step of determining types of functionality associated with theavailable solutions that are to be displayed to a user of the documentby calling on each of a plurality of software components comprising theavailable solutions.
 34. The method of claim 33, in response to the stepof determining types of functionality associated with the availablesolutions that are to be displayed to a user, designating a help contentfor display to the user.
 35. The method of claim 34, in response to thestep of determining types of functionality associated with the availablesolutions that are to be displayed to a user, designating a documenttool for display to the user.
 36. The method of claim 33, in response tothe step of determining types of functionality associated with theavailable solutions that are to be displayed to a user, designating acontrol for display to the user.
 37. The method of claim 36, wherebycontrols designated for display include radio buttons, check boxes andtext boxes.
 38. The method of claim 29, further comprising the step of:creating an XML schema for defining a list of document actions, controlsor help content associated with the available solutions associated withthe list of XML elements.
 39. The method of claim 33, further comprisingthe step of launching a graphical user interface for displaying eachsolution obtained for use by the document.
 40. The method of claim 39,whereby the step of displaying each solution obtained for use by thedocument includes drawing the help content and document tools in a helppane displayable to a user of the document.
 41. The method of claim 39,whereby the step of displaying each solution obtained for use by thedocument includes drawing the radio buttons, check boxes or text boxesin a help pane displayable to a user of the document.
 42. The method ofclaim 13, further comprising a method for implementing an ApplicationProgramming Interface is for providing the solution to the document,comprising the steps of: providing a SmartDocXMLTypeCount propertyincluding a number of XML element types associated with the solution;providing a SmartDocXMLTypeName property including unique identifiersfor the XML element types associated with the solution; providing aSmartDocXMLTypeCaption property including captions associated with XMLelements that may be displayed to a user; providing a ControlCountproperty including a number of controls associated with the solution;providing a ControlID property including unique identifiers for thecontrols; providing a ControlTypeFromID property including the types ofcontrols available for use with the solution; providing aControlNameFromID property for returning a name associated with eachcontrol for use internally by an application program providing thedocument; providing a PopulateRadioGroup method including routines andinstructions that are executed for populating radio controls that may bedisplayed to a user; providing an OnRadioGroupSelectChange methodincluding routines and instructions that are executed when a radiocontrol is selected; providing a PopulateImage method including routinesand instructions that are executed for populating an image associatedwith the solution; providing an ImageClick method including routines andinstructions that are executed when an image is selected; providing aPopulateDocumentFragment method including routines and instructions thatare executed for displaying data; providing a PopulateActiveXPropsmethod including routines and instructions that are executed forobtaining ActiveX functionality associated with the solution; providinga PopulateCheckbox method including routines and instructions forproviding a checkbox control; providing an OnCheckboxChange methodincluding routines and instructions that are executed when a checkboxcontrol is selected; providing a PopulateListOrComboContent methodincluding routines and instructions that are executed to populate a listbox control; providing OnListOrComboSelectChange method includingroutines and instructions that are executed upon the selection of anitem in a list box control; providing a PopulateTextboxContent methodincluding routines and instructions for populating a textbox; providingan OnTextboxContentChange method including routines and instructionsthat are executed for handling an event associated with a change ofcontent in the textbox control; providing a PopulateHelpContent methodincluding routines and instructions for populating a help content fieldwith data; and providing an InvokeControl method including routines andinstructions that are executed when a control is selected.
 43. A methodof providing contextually sensitive functionality to acomputer-generated document, comprising the steps of: attaching anExtensible Markup Language (XML) schema to the document definingpermissible data content, data types and data structures for thedocument; annotating particular portions of the document with XMLstructure associated with the permissible data content, the permissibledata types, and permissible data structures for the particular portionsof the document as defined by the schema; associating help content anddocument tools with XML elements comprising the XML structure;assembling a plurality of software components for providing the helpcontent and document tools to the document; and enabling the document tocall the plurality of software components for providing the help contentand document tools to the document based on an editing position in thedocument.
 44. The method of claim 43, further comprising the steps of:listing the plurality of software components in a manifest of softwarecomponents; and storing the manifest in a library of softwarecomponents.
 45. The method of claim 43, whereby the step of enabling thedocument to call the plurality of software components further comprisesthe step of attaching a solution property to the document to associatethe plurality of software components for providing the help content anddocument tools to the document.
 46. The method of claim 43, furthercomprising the step of enabling the document to receive the help contentand document tools by calling to the plurality of software componentsupon initiation of editing the document within an XML element associatedwith a particular help content or a particular document action.
 47. Themethod of claim 46, further comprising the steps of: booting a softwareapplication for opening the document; determining whether the documentrefers to help content or document tools; determining whether theplurality of software components for providing help content or documenttools is present in a library of software components; and calling theplurality of software components for providing the help content ordocument tools to the document.
 48. The method of claim 47, in responseto calling the plurality of software components, providing the helpcontent or document tools to the document.
 49. The method of claim 47,further comprising the steps of: opening the document; placing acomputer cursor in a particular portion of the document; generating alist of XML elements enclosing a position of the cursor; determining ifany available help content or document tools are associated with thelist of XML elements; and after determining if any available helpcontent or document tools are associated with the list of XML elements,calling each associated help content or document action; and obtainingeach associated help content or document action for use by the document.50. The method of claim 49, whereby the step of determining if anyavailable help content or document tools are associated with the list ofXML elements, further comprises the step of parsing a look-up table ofsolutions to determine if any available help content or document toolsare associated with any XML element in the list of XML elements.
 51. Themethod of claim 50, further comprising the steps of: launching agraphical user interface for displaying each help content or documentaction obtained for use by the document; and displaying each helpcontent or document action in the graphical user interface.
 52. Acomputer readable medium having stored thereon computer-executableinstructions which when executed by a computer, perform the steps of:attaching an Extensible Markup Language (XML) schema to the documentdefining permissible data content, data types and data structures forthe document; annotating particular portions of the document with XMLstructure associated with the permissible data content, the permissibledata types, and permissible data structures for the particular portionsof the document as defined by the schema; associating help content anddocument tools with XML elements comprising the XML structure;assembling a plurality of software components for providing the helpcontent and document tools to the document; and enabling the document tocall the plurality of software components for providing the help contentand document tools to the document based on an editing position in thedocument.
 53. The computer readable medium of claim 52 having storedthereon computer-executable instructions which when executed by acomputer, further perform the steps of: listing the plurality ofsoftware components in a manifest of software components; and storingthe manifest in a library of software components.
 54. The computerreadable medium of claim 53 having stored thereon computer-executableinstructions which when executed by a computer, further perform the stepof: whereby the step of enabling the document to call the plurality ofsoftware components further comprises the step of attaching a solutionproperty to the document to associate the plurality of softwarecomponents for providing the help content and document tools to thedocument.
 55. The computer readable medium of claim 54 having storedthereon computer-executable instructions which when executed by acomputer, further perform the step of: enabling the document to receivethe help content and document tools by calling to the plurality ofsoftware components upon initiation of editing the document within anXML element associated with a particular help content or a particulardocument action.
 56. The computer readable medium of claim 55 havingstored thereon computer-executable instructions which when executed by acomputer, further perform the steps of: booting a software applicationfor opening the document; determining whether the document refers tohelp content or document tools; determining whether the plurality ofsoftware components for providing help content or document tools ispresent in a library of software components; and calling the pluralityof software components for providing the help content or document toolsto the document.
 57. The computer readable medium of claim 56 havingstored thereon computer-executable instructions which when executed by acomputer, further perform the step of: providing the help content ordocument tools to the document in response to calling the plurality ofsoftware components.
 58. The computer readable medium of claim 57 havingstored thereon computer-executable instructions which when executed by acomputer, further perform the steps of: opening the document; placing acomputer cursor in a particular portion of the document; generating alist of XML elements enclosing a position of the cursor; determining ifany available help content or document tools are associated with thelist of XML elements; and after determining if any available helpcontent or document tools are associated with the list of XML elements,calling each associated help content or document action; and obtainingeach associated help content or document action for use by the document.59. The computer readable medium of claim 58 having stored thereoncomputer-executable instructions which when executed by a computer,further perform the step of: whereby the step of determining if anyavailable help content or document tools are associated with the list ofXML elements, further comprises the step of parsing a look-up table ofsolutions to determine if any available help content or document toolsare associated with any XML element in the list of XML elements.
 60. Thecomputer readable medium of claim 59 having stored thereoncomputer-executable instructions which when executed by a computer,further perform the steps of: launching a graphical user interface fordisplaying each help content or document action obtained for use by thedocument; and displaying each help content or document action in thegraphical user interface.